/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.yournamehere.server.services;

import com.google.gwt.user.client.Window;
import com.google.gwt.user.server.rpc.RemoteServiceServlet;
import entidades.*;
import facades.AdminFacadeLocal;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.ejb.EJB;
import org.yournamehere.client.dto.*;
import org.yournamehere.client.services.AdminRPC;

/**
 *
 * @author konecta
 */
public class AdminRPCImpl extends RemoteServiceServlet implements AdminRPC {

    @EJB
    AdminFacadeLocal adminFacade;
    
    
    @Override
    public List<UserDTO> listarUsuarios() {
        List<UserDTO> listaDTO = new ArrayList();
        List<Usuarios> lista = null;
        try {
            lista = adminFacade.listarUsuarios();
        //cambiar después
        } catch (/*ListaVaciaException*/ Exception ex) {
            Logger.getLogger(AdminRPCImpl.class.getName()).log(Level.SEVERE, null, ex);
        }

        
        System.out.println("cantidad de usuarios devuelta por el servidor-->" + lista.size());
        
        for (Usuarios user : lista) {
            //transformar usuario a DTO
            UserDTO userDTO = new UserDTO();

            
            userDTO.setIdUsuario(user.getIdUsuario());
            userDTO.setNombre(user.getNombres());
            //userDTO.setCedula(user.getCed);
            //userDTO.setDireccion(user.getDireccion());
            //userDTO.setTelefono(user.getTelefono());
            userDTO.setPassword(user.getContrasenha());
            userDTO.setUsuario(user.getUsuario());
            //userDTO.setRol(user.getRol().getNombre());*/
            userDTO.setApellidos( user.getApellidos());
            userDTO.setTipoUsuario( user.getIdTipoUsuario().getDescripcion());
            
            listaDTO.add(userDTO);
        }
        return listaDTO;
    }
    
    @Override
    public List<ClienteDTO> listarClientes() {
        List<ClienteDTO> listaDTO = new ArrayList<ClienteDTO>();
        List<Cliente> lista = null;
        try {
            lista = adminFacade.listarClientes();
        //cambiar después
        } catch (/*ListaVaciaException*/ Exception ex) {
            Window.alert("Error llamando al facade Cliente");
            Logger.getLogger(AdminRPCImpl.class.getName()).log(Level.SEVERE, null, ex);
        }      
        
        for (Cliente cliente : lista) {
            //transformar usuario a DTO
            ClienteDTO clienteDTO = new ClienteDTO();
            
            clienteDTO.setIdCliente(cliente.getIdCliente());
            clienteDTO.setNombres(cliente.getNombres());
            clienteDTO.setApellidos(cliente.getApellidos());
            clienteDTO.setRuc(cliente.getRuc());
            clienteDTO.setDireccion(cliente.getDireccion());
            clienteDTO.setTelefono(cliente.getTelefono());
            clienteDTO.setEmail(cliente.getEmail());
            
            listaDTO.add(clienteDTO);
        }
        return listaDTO;
    }
    
    @Override
    public void createCliente(ClienteDTO cli){
        Cliente cliente = new Cliente();
        
        cliente.setNombres(cli.getNombres());
        cliente.setApellidos(cli.getApellidos());
        cliente.setRuc(cli.getRuc());
        cliente.setDireccion(cli.getDireccion());
        cliente.setTelefono(cli.getTelefono());
        cliente.setEmail(cli.getEmail());
        
        adminFacade.createCliente(cliente);       
        
    }
}
